{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plotting / Gráficas\n",
    "\n",
    "## Introducción\n",
    "\n",
    "Hay muchas manera de graficar en Julia (además de usar PyPlot). <br>\n",
    "\n",
    "Aquí veremos como usar `Plots.jl`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Pkg.add(\"Plots\")\n",
    "using Plots"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Una de las ventajas de `Plots.jl` Es que permite cambiar los backends sin costo alguno. En este notebook, vamos a intentar usar `gr()` y `plotlyjs()` como backends.<br>\n",
    "\n",
    "Primero vamos a generar datos artificiales para graficar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = -3:0.1:3\n",
    "f(x) = x^2\n",
    "\n",
    "y = f.(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Carguemos el backend de GR**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "gr()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plot(x, y, label=\"linea\")  \n",
    "scatter!(x, y, label=\"puntos\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "El `!` al final de `scatter!` indica que sea una función mutante,  indicando que los puntos se van a agregar a la gráfica preexistente.\n",
    "\n",
    "Por contraste, en vez de usar `scatter!`, usa `scatter` para ver como funciona."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Sin cambiar de sintaxis, cambiamos al backend de `plotlyjs()`**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plotlyjs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plot(x, y, label=\"line\")  \n",
    "scatter!(x, y, label=\"points\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Y nos fijamos como cambia la primera gráfica de la segunda"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Subiendo de nivel\n",
    "\n",
    "La sintaxis para agregar títulos y líneas es bastante directa.\n",
    "\n",
    "Ahora, en el nombre de la ciencia, vamos a examinar la relación entre la temperatura global y el número de piratas entre 1860 y 2000."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "globaltemperatures = [14.4, 14.5, 14.8, 15.2, 15.5, 15.8]\n",
    "numpirates = [45000, 20000, 15000, 5000, 400, 17]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Primero plotteamos los datos\n",
    "plot(numpirates, globaltemperatures, legend=false)\n",
    "scatter!(numpirates, globaltemperatures, legend=false)\n",
    "\n",
    "# Agregamos Títulos y etiquetas/labels.\n",
    "xlabel!(\"Número de piratas [Apróx.]\")\n",
    "ylabel!(\"Temperatura Global (C)\")\n",
    "title!(\"Influencia de población de piratas en calentamiento global\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Primero graficamos datos\n",
    "plot(numpirates, globaltemperatures, legend=false)\n",
    "scatter!(numpirates, globaltemperatures, legend=false)\n",
    "\n",
    "# Este comando invierte el eje x para que podamos ver los cambios hacia adelante en el tiempo, de 1860 a 2000\n",
    "xflip!()\n",
    "\n",
    "# Add titles and labels\n",
    "xlabel!(\"Number of Pirates [Approximate]\")\n",
    "ylabel!(\"Global Temperature (C)\")\n",
    "title!(\"Influence of pirate population on global warming\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Para crear una gráfica con subráficas, sólo nombramos a cada una de las subgráficas y las ponemos junto con la especificación de diseño en una sóla llamada a `plot`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "p1 = plot(x, x)\n",
    "p2 = plot(x, x.^2)\n",
    "p3 = plot(x, x.^3)\n",
    "p4 = plot(x, x.^4)\n",
    "plot(p1,p2,p3,p4,layout=(2,2),legend=false)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Ejercicios\n",
    "\n",
    "8.1 Grafica y vs x para `y = x^2` usando el backend de PyPlot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Julia 0.6.1",
   "language": "julia",
   "name": "julia-0.6"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.2"
  },
  "toc": {
   "nav_menu": {
    "height": "66px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": "2",
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
